home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 November: Tool Chest / Dev.CD Nov 98 TC.toast / Sample Code / Snippets / QuickDraw / Out of This GWorld / Source / menu.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-09-17  |  3.5 KB  |  168 lines  |  [TEXT/CWIE]

  1. #include <Resources.h>
  2. #include <Menus.h>
  3. #include "out.h"
  4.  
  5. MenuHandle appleMenu, fileMenu, patMenu, animMenu;
  6.  
  7. enum {
  8.     appleID = 1,
  9.     fileID,
  10.     patID,
  11.     animID
  12. };
  13.  
  14. enum {
  15.     quitItem = 1
  16. };
  17.  
  18. enum {
  19.     pat1Item = 1,
  20.     pat2Item,
  21.     pat3Item,
  22.     pat4Item,
  23.     pat5Item,
  24.     pat6Item,
  25.     pat7Item,
  26.     pat8Item
  27. };
  28.  
  29. enum {
  30.     startItem = 1,
  31.     stopItem,
  32.     forItem = 4,
  33.     revItem,
  34.     colorItem = 7,
  35.     grayItem,
  36.     resetItem
  37. };
  38.  
  39. void setUpMenus()
  40. {
  41.     InsertMenu( appleMenu = NewMenu( appleID, "\p\024" ), 0 );
  42.     InsertMenu( fileMenu = NewMenu( fileID, "\pFile" ), 0 );
  43.     InsertMenu( patMenu = NewMenu( patID, "\pDemo" ), 0 );
  44.     InsertMenu( animMenu = NewMenu( animID, "\pAnimation" ), 0 );
  45.  
  46.     DrawMenuBar();
  47.     
  48.     AppendMenu( appleMenu, "\pAbout Out of This GWorld;(-" );
  49.     AppendResMenu( appleMenu, 'DRVR' );
  50.     
  51.     AppendMenu( fileMenu, "\pQuit/Q" );
  52.     AppendMenu( patMenu, "\pColor Scale/1;Color Wheels/2;Color Rings/3;Color Gears/4;Color Curves/5;Color Balls/6;Color Wave/7;Color Text/8" );
  53.     AppendMenu( animMenu, "\pStart Animation/A;Stop Animation/S;(-;Forward/F;Reverse/R;(-;Color Palette/C;Gray Palette/G;Reset Palette/R" );
  54. }
  55.  
  56. void adjustMenus()
  57. {
  58.     register WindowPeek wp = (WindowPeek)FrontWindow();
  59.     short kind = wp ? wp->windowKind : 0;
  60.     Boolean DA = kind < 0;
  61.  
  62.     enable( fileMenu, quitItem, true );
  63.     enable( patMenu, pat1Item, gCurrentPat != pat1Item );
  64.     enable( patMenu, pat2Item, gCurrentPat != pat2Item );
  65.     enable( patMenu, pat3Item, gCurrentPat != pat3Item );
  66.     enable( patMenu, pat4Item, gCurrentPat != pat4Item );
  67.     enable( patMenu, pat5Item, gCurrentPat != pat5Item );
  68.     enable( patMenu, pat6Item, gCurrentPat != pat6Item );
  69.     enable( patMenu, pat7Item, gCurrentPat != pat7Item );
  70.     enable( patMenu, pat8Item, gCurrentPat != pat8Item );
  71.     
  72.     enable( animMenu, startItem, gCurrentMove != START );
  73.     enable( animMenu, stopItem, gCurrentMove != STOP );
  74.     enable( animMenu, forItem, gCurrentDir != FORWARD );
  75.     enable( animMenu, revItem, gCurrentDir != REVERSE );
  76.     enable( animMenu, colorItem, gCurrentColor != COLOR );
  77.     enable( animMenu, grayItem, gCurrentColor != GRAY );
  78.     enable( animMenu, resetItem, true );
  79. }
  80.  
  81. void enable( menu, item, ok )
  82. MenuHandle menu;
  83. {
  84.     if (ok)
  85.         EnableItem( menu, item );
  86.     else
  87.         DisableItem( menu, item );
  88. }
  89.  
  90. void handleMenu( mSelect )
  91. long mSelect;
  92. {
  93.     int            menuID = HiWord( mSelect );
  94.     int            menuItem = LoWord( mSelect );
  95.     GrafPtr        savePort;
  96.     Str255        name;
  97.     //RGBColor    aColor;
  98.     
  99.     switch (menuID)
  100.     {
  101.         case appleID:
  102.             if (menuItem == 1)
  103.             {
  104.                 gCurrentPat = -1;
  105.                 defineColorPalette();
  106.                 updatePalette();
  107.                 createImage();
  108.                 drawImage();
  109.             }
  110.             else
  111.             {
  112.                 GetPort( &savePort );
  113.                 GetMenuItemText( appleMenu, menuItem, name );
  114.                 OpenDeskAcc( (ConstStr255Param)name );
  115.                 SetPort( savePort );
  116.             }
  117.             break;
  118.             
  119.         case fileID:
  120.             switch (menuItem)
  121.             {
  122.                 case quitItem:
  123.                     cleanUp();
  124.                     break;
  125.             }
  126.             break;
  127.             
  128.         case patID:
  129.             gCurrentPat = menuItem;
  130.             createImage();
  131.             drawImage();
  132.             break;
  133.             
  134.         case animID:
  135.             switch (menuItem)
  136.             {
  137.                 case startItem:
  138.                     gCurrentMove = START;
  139.                     break;
  140.                 case stopItem:
  141.                     gCurrentMove = STOP;
  142.                     break;
  143.                 case forItem:
  144.                     gCurrentDir = FORWARD;
  145.                     break;
  146.                 case revItem:
  147.                     gCurrentDir = REVERSE;
  148.                     break;
  149.                 case colorItem:
  150.                     defineColorPalette();
  151.                     updatePalette();
  152.                     break;
  153.                 case grayItem:
  154.                     defineGrayPalette();
  155.                     updatePalette();
  156.                     break;
  157.                 case resetItem:
  158.                     if (gCurrentColor == COLOR || gCurrentPat == -1)
  159.                         defineColorPalette();
  160.                     else
  161.                         defineGrayPalette();
  162.                     updatePalette();
  163.                     break;
  164.             }
  165.             break;
  166.     }
  167.     HiliteMenu( 0 );
  168. }